package com.bd.scm.dao.mapper.standardReports;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bd.scm.domain.dto.standardReports.*;
import com.bd.scm.domain.models.standardReports.BdRecordType;
import com.bd.scm.domain.models.standardReports.StandardReports;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName StandardReportsMapper
 * @Description TODO
 * @Author YH
 * @Date 2019/9/4 10:35
 * @Version 1.0
 **/
public interface StandardReportsMapper extends BaseMapper<StandardReports> {

    /**
     * 获取按门查询进出记录
     *
     * @param page
     * @param standardReportsDto startDate 开始日期  endDate 结束日期 acdepSerial 场所ID（xx,xx） bh 门（xx,xx） jlType 记录类型（xx,xx）
     * @return
     */
    Page<StandardReports> getPressDoorQueryList(Page<StandardReports> page, StandardReportsDto standardReportsDto);

    /**
     * 获取按人查询进出记录
     *
     * @param page
     * @param standardReportsDto startDate 开始日期  endDate 结束日期 depSerial 部门ID（xx,xx） userSerial 用户ID（xx,xx） jlType
     *                           记录类型（xx,xx）
     * @return
     */
    Page<StandardReports> getPressUserQueryList(Page<StandardReports> page, StandardReportsDto standardReportsDto);

    /**
     * 获取按设备查询进出记录
     *
     * @param page
     * @param standardReportsDto startDate 开始日期  endDate 结束日期 acdepSerial 场所ID（xx,xx） devSerial 设备ID（xx,xx） jlType
     *                           记录类型（xx,xx）
     * @return
     */
    Page<StandardReports> getPressDeviceQueryList(Page<StandardReports> page, StandardReportsDto standardReportsDto);

    /**
     * 查询所有记录类型
     *
     * @return
     */
    List<BdRecordType> findBdRecordType();

    /**
     * 员工实际打卡记录
     *
     * @param map
     * @return
     */
    List<PersonalCardRecordDto> getPersonalCardRecord(@Param("map") ReportHysjQuery map);


    /**
     * 员工实际打卡记录
     *
     * @param map
     * @return
     */
    List<ReportDayOffDto> reportDayOff(@Param("map") ReportHysjQuery map);

    /**
     * 员工实际打卡记录.
     *
     * @param map
     * @return
     */
    List<OvertimeSummaryDto> getOvertimeSummary(@Param("map") ReportHysjQuery map);

    /**
     * 加班明细报表.
     *
     * @param map
     * @return
     */
    List<OvertimeDetailDto> getOvertimeDetailRecord(@Param("map") ReportHysjQuery map);
    /**
     * 请假明细报表.
     *
     * @param map
     * @return
     */
    List<LeaveDetailDto> getLeaveDetailRecord(@Param("map") ReportHysjQuery map);

    /**
     * 加班统计报表.
     *
     * @param query
     * @return
     */
    List<PracticalWorkingByDeptDto> getPracticalWorking(@Param("map") ReportHysjQuery query);

    /**
     * 班次统计（按正常班次正常出勤）.
     *
     * @param query
     * @return
     */
    List<BanciByNormalDto> getBanciByNormal(@Param("map") ReportHysjQuery query);

    /**
     * 加班小时TOP.
     *
     * @param query
     * @return
     */
    List<OvertimeTopDto> getOvertimeTop(@Param("map") ReportHysjQuery query);

    /**
     * 排班及申请流程数据统计.
     *
     * @param query
     * @return
     */
    List<ScheduleAndApplySummaryDto> getScheduleAndApplySummary(@Param("map") ReportHysjQuery query);
}
